package org.tis.tools.abf.module.common.validation;

import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.Documented;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;

import static java.lang.annotation.ElementType.*;
import static java.lang.annotation.RetentionPolicy.RUNTIME;

/**
 * description: tools业务字典约束
 * 在需要验证业务字典的方法参数或实体类属性上添加该注解
 * 如
 * queryByKey( @ToolsDict("dict_key") String key)
 * 中： dict_key为业务字典中的{@link org.tis.tools.abf.module.sys.entity.SysDict#dictKey}
 *
 * @author zhaoch
 * @date 2018/9/5
 **/

@Documented
@Constraint(validatedBy = {DictValidatorHandler.class })
@Target({  FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER })
@Retention(RUNTIME)
public @interface Dict {

    String message() default "业务字典'{value}'没有字典项 '${validatedValue}'";

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};

    /**
     * 业务字典的key值
     * @see org.tis.tools.abf.module.sys.entity.SysDict#dictKey
     */
    String value();
}
